﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DTO.Clases;
using NpgsqlTypes;
using Npgsql;
using System.Data;


namespace DataAccessLayer.Clases
{
    public class DaoPunto
    {
        private Conexion conexion; 
        private NpgsqlCommand comando;

        /// <summary>
        /// Representa la funcion modifica_punto.
        /// </summary>      
        private string sqlModificarPunto = "modifica_punto";

        /// <summary>
        /// Representa la finción listado_valor_punto.
        /// </summary>
        private string sqlCargar = "listado_valor_punto";
        
        /// <summary>
        /// modifica objeto punto
        /// </summary>
        /// <param name="mipunto"></param>
        public void ModificaPunto(Puntos mipunto)
        {
            try
            {
                conexion = new Conexion();
                comando = new NpgsqlCommand();
                comando.Connection = conexion.MiConexion;
                comando.CommandText = sqlModificarPunto;
                comando.CommandType = CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("idpuntos", mipunto.IdPuntos);
                comando.Parameters.AddWithValue("valorventaminpunto", mipunto.ValorVentaMinPunto);
                comando.Parameters.AddWithValue("numeropunto", mipunto.NumeroPuntos);
                comando.Parameters.AddWithValue("valorpunto", mipunto.ValorPunto);
                comando.Parameters.AddWithValue("estadopunto", mipunto.EstadoPunto);
                conexion.MiConexion.Open();
                comando.ExecuteNonQuery();
                conexion.MiConexion.Close();
                comando.Dispose();

            }
            catch (Exception ex)
            {
                throw new Exception("problemas al modificar puntos" + ex.Message);

            }
            finally
            {
                conexion.MiConexion.Close();
            }
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public Puntos CargaPunto()
        {
            try
            {
                Puntos mipunto = new Puntos();              
                conexion = new Conexion();
                comando = new NpgsqlCommand();
                comando.Connection = conexion.MiConexion;
                comando.CommandText = sqlCargar;
                comando.CommandType = CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("idpuntos", mipunto.IdPuntos);
                conexion.MiConexion.Open();
                NpgsqlDataReader myreader = comando.ExecuteReader();

                while (myreader.Read())
                {
                    mipunto.IdPuntos = myreader.GetInt32(0);
                    mipunto.ValorVentaMinPunto = myreader.GetInt32(1);
                    mipunto.NumeroPuntos = myreader.GetDouble(2);
                    mipunto.ValorPunto = myreader.GetDouble(3);
                    mipunto.EstadoPunto = myreader.GetBoolean(4);


                }
                conexion.MiConexion.Close();
                comando.Dispose();
                return mipunto;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
    }
}